// pages/cart/cart.js
Page({

  /**
   * 页面的初始数据
   */
  data: {
    // 判断购物车中是否有商品
    isNull:true,
    // 购物车商品数组
    carList:[],
    // 商品总价
    totalPrice:0,
    // 全选
    allCheck:true,
    // 结算的商品数量
    btnNum:0,
  },

  // 商品结算
  toPay:function(){
    if(this.data.btnNum == 0){
      // 没有选中商品，不能结算
      wx.showToast({
        title: '请选择商品结算',
        icon: 'none',
        duration: 2000
      })
    }else{
      // 把当前选中的商品添加到完成订单的缓存数据中
        // 定义完成订单的空数组
      var confirm = []
        // 获取购物车商品数组
      var carList = wx.getStorageSync('carList')
      for(var i=0;i<carList.length;i++){
        // 判断当前商品是否选中
        if(carList[i].checked){
          // 将选中的商品添加到完成订单的数组中
          confirm.push(carList[i])
        }
      }
      // 把当前选中的商品添加到完成订单的缓存数据中
      wx.setStorageSync('confirmList',confirm)
      // 选中商品，结算
      wx.navigateTo({
        url: '/pages/confirmorder/confirmorder?type=c',
      })
    }
  },

  // 增加数量
  addNum:function(event){
    // console.log(event)
    // 获取当前点击的商品对应的下标值
    var index = event.target.dataset.index
    // console.log(index)
    // 获取当前商品对应的商品数量
    var num = this.data.carList[index].num
    // 数量的自加
    num++
    // console.log(num)
    // 自定义对象
    var obj = {}
    var key = 'carList['+index+'].num'
    obj[key] = num
    // 修改data的购物车商品数组
    this.setData(obj)
    // 修改缓存数据
    wx.setStorageSync('carList', this.data.carList)
    // 调用计算总价函数
    this.price()
  },

  // 减少数量
  reduceNum:function(event){
    // console.log(event)
    // 获取当前点击商品对应的下标值
    var index = event.target.dataset.index
    // console.log(index)
    // 获取当前商品对应的商品数量
    var num = this.data.carList[index].num
    // 判断商品数量
    if(num > 1){
      // 数量的自减
      num--
    }
    // console.log(num)
    // 自定义对象
    var obj = {}
    var key = 'carList['+index+'].num'
    obj[key] = num
    // 修改data的购物车商品数组
    this.setData(obj)
    // 修改缓存数据
    wx.setStorageSync('carList', this.data.carList)
    // 调用计算总价函数
    this.price()
  },

  // 删除数据
  delData:function(event){
    var index = event.target.dataset.index
    // splice(删除的下标值，删除的个数)
    // 获取当前购物车的所有商品数据
    var good = this.data.carList
    // 删除当前点击的数据
    good.splice(index,1)
    // 判断购物车中的商品是否全部都删除
    var isNull = false
    if(good.length == 0){
      isNull = true
    }
    // console.log(good)
    // 修改data里面的数据（控制页面渲染）
    this.setData({
      carList:good,
      isNull:isNull
    })
    // 修改数据
    wx.setStorageSync('carList', good)
    // 调用计算总价函数
    this.price()
  },
  
  // 商品是否选中
  isChecked:function(event){
    // console.log(event)
    // 获取当前选中的商品对应的下标值
    var index = event.target.dataset.index
    // console.log('index==>',index)
    // 获取商品是否选中的状态  value的长度为0则取消选中，为1则选中
    var valueLength = event.detail.value.length
    // console.log(valueLength)
    // 获取当前点击的商品的checked的值
    var checked = this.data.carList[index].checked
    // console.log(checked)
    // 判断是否选中
    if(valueLength == 0){
      checked = false
    }else if(valueLength == 1){
      checked = true
    }
    // 定义对象
    var obj = {}
    var key = 'carList['+index+'].checked'
    obj[key] = checked
    // 修改data数据
    this.setData(obj)
    // 修改缓存数据
    wx.setStorageSync('carList', this.data.carList)
    // 调用计算总价函数
    this.price()
    // 判断是否有商品未选中
    var carList = wx.getStorageSync('carList')
    var allcheck = true
    for(var i=0;i<carList.length;i++){
      if(carList[i].checked == false){
        allcheck = false
      }
    }
    this.setData({
      allCheck:allcheck
    })
  },

  // 计算总价
  price:function(){
    // 获取购物车商品数据
    var carList = wx.getStorageSync('carList')
    // console.log(carList)
    // 定义初始总价
    var totalPrice = 0
    var btnNum = 0
    // 循环遍历
    for(var i=0;i<carList.length;i++){
      // 判断商品是否选中，如果选中才计算总价
      if(carList[i].checked){
        // console.log(carList[i])
        // 单价*数量
        totalPrice += carList[i].price * carList[i].num
        btnNum += carList[i].num
      }
    }
    // 修改data数据
    this.setData({
      totalPrice:totalPrice,
      btnNum:btnNum
    })
  },

  // 全选
  isAllchecke:function(event){
    // 选中返回1     取消选中返回0
    var valueLength = event.detail.value.length
    // 获取购物车商品数据
    var carList = this.data.carList
    for(var i=0;i<carList.length;i++){
      // 判断
      if(valueLength == 0){
        carList[i].checked = false
      }else if(valueLength == 1){
        carList[i].checked = true
      }
    }
    // 修改data数据
    this.setData({
      carList:carList
    })
    // 修改缓存数据
    wx.setStorageSync('carList', carList)
    // 调用计算总价
    this.price()
  },

  // 到小米商城逛逛
  toIndex:function(){
    // console.log(111111)
    // 只能跳转到非tabbar的页面
    // wx.navigateTo({
    //   url: '/pages/other/other',
    // })
    // 只能跳转到tabbar的页面
    wx.switchTab({
      url: '/pages/index/index',
    })
  },

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad: function (options) {

  },

  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady: function () {

  },

  /**
   * 生命周期函数--监听页面显示
   */
  onShow: function () {
    // 获取购物车的缓存数据
    var carList = wx.getStorageSync('carList')
    var isNull = true
    if(carList.length != 0){
      isNull = false
    }
        this.setData({
          isNull:isNull,
          carList:carList,
        })
    // console.log(this.data.allCheck)
    // 调用计算总价函数
    this.price()
    // 判断是否有商品未选中
    // var carList = wx.getStorageSync('carList')
    var allcheck = true
    for(var i=0;i<carList.length;i++){
      if(carList[i].checked == false){
        allcheck = false
      }
    }
    this.setData({
      allCheck:allcheck
    })
  },

  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide: function () {

  },

  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload: function () {

  },

  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh: function () {

  },

  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom: function () {

  },

  /**
   * 用户点击右上角分享
   */
  onShareAppMessage: function () {

  }
})